身為一個App的開發新手常常會遇到一些莫名其妙又難以解決的問題,直到找到問題答案才發現根本是自己愚蠢的錯誤造成的,往往也因此耗費了大量的時間和精力來解決問題,這邊就來記錄一下我遇到的愚蠢問題吧,希望也能幫助到有跟我遇到相同問題的人,以節省找答案的時間。
這是我開發的第二個app初次嘗試使用Friebase的Authentication 和 Realtime Database功能,簡單來說就是能利用第三方登入功能來實現用戶資料的儲存,要能夠連結Firebase與應用必須先在Firebase專案設定中新增SHA憑證指紋
其中分為debug版和release版,debug版是我們在測試程式運行時會用到的,也就是在android studio中點擊運行後會直接在虛擬機執行的版本,這個SHA憑證指紋可以直接在android studio 種取得,點擊右側的Gradle>你的專案名稱>Tasks>android>signingReport 在下方的視窗即可找到。
而release版則是在你輸出不論是apk或aab檔後產生金鑰後利用cmd讀取來取得,這邊也寫一下詳細步驟。先假設你已經完成輸出並建立金鑰(不然這篇可能永遠寫不完QQ),首先先找到java keytool的位置,我的位置在C:\Program Files\Java\jdk1.8.0_281\bin
通常位置都是相同的但jdk版本可能會不同,開啟cmd,輸入cd/d 你的keytool位置
接著輸入keytool -list -v -keystore 你輸出jks檔的位置
就可以找到release版的SHA憑證指紋囉。
經過測試後release版跟debug版都能正常運行,接著就興高采烈的發佈了應用程式,經過幾天的審核終於上架了,興奮的下載來使用後卻發現竟然無法登入,眼淚直接掉出來,趕緊上網查資料找解答,原來是發佈後還需要在firebase中新增一個應用程式簽署金鑰憑證的SHA憑證指紋,要找到這個指紋也很簡單,首先登入Google Play Concole,找到你的App,左側的設定>應用程式完整性,就可以找到囉。(參考:https://stackoverflow.com/questions/39318370/google-sign-in-not-working-after-publishing-in-play-store)
這下應該沒問題了吧,懷著忐忑的心情再次開啟App,緊張的按下了登入,結果竟然還是不行,當場崩潰在電腦桌前,但是問題還是得解決,立馬上網繼續爬文,最後終於讓我找到問題點了,問題在於我在應用發佈前都沒有去修改應用程式的ID,而發佈時曾出現"「com.example」受到限制,請選用其他套件名稱。"的提醒。當時時的解決方法是直接進build.gradle中修改applicationId並繼續上傳,殊不知更改applicationId會使firebase與應用程式間的連結斷開,以至於整個firebase的功能都無法使用,而這個問題就沒那麼好解決了,因為firebase中的套件名稱無法直接修改,必須重新建立一個新的應用程式,我的作法如下:
1.刪除firebase中的應用程式(不要刪除project
2.移除android studio中的google-services.json文件
3.關閉android studio
4.重新開啟android studio利用tool>firebase重新建立連結
5.在Play商店發佈新版本
(參考:https://stackoverflow.com/questions/46260799/how-to-change-the-package-name-of-an-app-in-android-studio-linked-to-firebase)
所以在建立一個新的android專案前,先修改專案名稱可以省去很多麻煩事,我的經驗分享給大家,希望可以幫助到遇到相同問題的人。
有任何新的消息會再更新這篇文章